package com.zrwl.poscloud.commons.utils;

import java.util.Date;
import java.util.Random;

/**
 * @author 刘思童
 * @create 2022-10-09 8:57
 **/
public class FlowCodeUtil {
    /***
     * 中间20位唯一数字
     * @param begin 指定开头
     * @param beforeRandom 指定随机数前面的值
     * @param end 指定结尾
     * @return
     */
    public static String getFlowCode(String begin, String beforeRandom, String end) {
        return begin + DateUtils.format(new Date(), "yyyyMMddHHmmss") + beforeRandom
                + genRandomNum(6) + end;
    }

    public static String genRandomNum(int pwd_len) {
        // 35是因为数组是从0开始的，26个字母+10个数字
        final int maxNum = 10;
        int i; // 生成的随机数
        int count = 0; // 生成的密码的长度
        char[] str = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

        StringBuffer pwd = new StringBuffer("");
        Random r = new Random();
        while (count < pwd_len) {
            // 生成随机数，取绝对值，防止生成负数，
            i = Math.abs(r.nextInt(maxNum)); // 生成的数最大为maxNum-1

            if (i >= 0 && i < str.length) {
                pwd.append(str[i]);
                count++;
            }
        }
        return pwd.toString();
    }

}
